《智能优化算法》课的一次作业。报着学点东西的态度,没有从网上下载(网上好像都是那个VC6的MFC程序),纯C++,从零写起,顺便学习了一下如何用STL。
运行结果:
#读入数据 OK
#计算城市距离矩阵 OK
#初始化255个染色体:............................................................................................................................................
................................................................................................................... OK
#开始遗传算法,结束条件为连续200代变化小于1e-015
第 1代 最短距离=971.792
第 2代 最短距离=892.135
第 3代 最短距离=713.293
第 4代 最短距离=670.46
第 5代 最短距离=621.353
第 6代 最短距离=597.599
第 7代 最短距离=553.647
第 8代 最短距离=523.755
第 9代 最短距离=519.167
第 10代 最短距离=494.994
第 11代 最短距离=484.889
第 12代 最短距离=477.425
第 13代 最短距离=468.237
第 14代 最短距离=449.349
第 15代 最短距离=449.349
第 16代 最短距离=446.246
第 17代 最短距离=446.246
第 18代 最短距离=446.246
第 19代 最短距离=446.246
第 20代 最短距离=445.269
第 21代 最短距离=441.656
第 22代 最短距离=440.679
第 23代 最短距离=436.875
(第 24代 到 第 225代 最短距离的小数点后三位相等,这里不一一列出)
第 226代 最短距离=436.875
#检验结果->序列正确
1 22 2 21 29 20 35 36 3 28 31 26 8 48 6 23 7 43 24 14 25 13 41 40 19 42 44 15 45
33 39 10 30 34 50 16 11 38 9 49 5 37 17 4 18 47 12 46 51 27 32
共使用时间: 1.931秒
Press any key to continue . . .
使用了谢胜利的贪心交叉方式(Greedy Crossover),极大地提高了收敛速度。